#ifndef CABRILLO_CONFIG_DIALOG_H
#define CABRILLO_CONFIG_DIALOG_H

#include <gtk/gtk.h>
#include "../config/cabrillo_config.h"

class CabrilloConfigDialog {
private:
    GtkWidget* dialog;
    CabrilloConfig* config;
    
    // Entry widgets
    GtkWidget* entry_callsign;
    GtkWidget* entry_contest;
    GtkWidget* entry_location;
    GtkWidget* entry_start_of_log;
    GtkWidget* entry_category_operator;
    GtkWidget* entry_category_band;
    GtkWidget* entry_category_power;
    GtkWidget* entry_category_assisted;
    GtkWidget* entry_category_mode;
    GtkWidget* entry_category_station;
    GtkWidget* entry_category_transmitter;
    GtkWidget* entry_claimed_score;
    GtkWidget* entry_operators;
    GtkWidget* entry_club;
    GtkWidget* entry_name;
    GtkWidget* entry_address;
    GtkWidget* entry_address1;
    GtkWidget* entry_address_city;
    GtkWidget* entry_address_state_province;
    GtkWidget* entry_address_postalcode;
    GtkWidget* entry_address_country;
    GtkWidget* entry_grid_locator;
    GtkWidget* entry_email;
    GtkWidget* entry_created_by;
    GtkWidget* entry_dbname;
    GtkWidget* entry_gps_latitude;
    GtkWidget* entry_gps_longitude;
    
    // Private methods
    void loadConfigToUI();
    void saveConfigFromUI();
    
public:
    CabrilloConfigDialog();
    ~CabrilloConfigDialog();
    
    bool show(GtkWindow* parent);
};

// C wrapper functions for GTK callbacks
extern "C" void on_cw_cabrillo_button_clicked(GtkWidget* widget, gpointer data);

#endif // CABRILLO_CONFIG_DIALOG_H